Introduction
Hitting a baseball has been shown to be one of the most difficult tasks in all of sports. Anybody who has gone to a batting cage and tried the fastest machine for fun knows how hard it can be to hit a normal fastball. That does not even include the possibilities of breaking balls and off-speed pitches. Batters have a fraction of a fraction of a second to recognize a pitch, determine if that pitch will be a ball or a strike, and set their swing into motion. Considering the human body can only move so fast to get the bat over the plate, the batter has to make their decision moments after the ball leaves the pitcher’s hand. To give themselves the best chance of making good contact, professional baseball players will often attempt to predict whether a changeup, fastball, or a curveball is coming before the ball leaves the pitcher’s hand.
Hitters will use a variety of information to inform their prediction of an upcoming pitch, including scouting reports that teams build coming into a game, situational context, memory of the previous few pitches, and game specific tendencies of a pitcher. In this project, we attempt to model this decision making process with a random forest pitch type classifier. We use pitch level data from the 2015-2018 seasons to predict pitch types for 30 different pitchers who played during that type period.
Our model aims contributes to the baseball world in the following ways. First, by testing how different sets of features perform at classifying out of sample pitch types, we see that some features are more important for certain pitchers than they are for others. This will help teams focus on the important information when building scouting reports going into a game against a certain pitcher.
Second, we aim to make the results of our pitch type predictor accessible to baseball fans in hopes that it can augment their viewing experience. For many enthusiasts, strategizing along side the players from pitch to pitch, guessing both what the pitcher is going to throw as well as what the batter’s strategy will be, is the most enjoyable part of the game. However, among more casual fans, baseball has the reputation for being “boring” to watch, largely due to the pauses between every pitch, during which players sometimes take 30 or more seconds to relay signs and perform ritualistic jersey adjustments, bat taps, and other manor of baseball superstition. To make this aspect of baseball more palatable to fans, we built an R Shiny web application that allows them to input game situations and call our model’s pitch type predictions in real time, allowing them to take part in the “game within the game” of baseball.
This report proceeds as follows. First we analyze the physical attributes of the pitches that our 30 selected pitchers throw, making the case that it is indeed in the batters best interest to have an idea of how a particular pitch is going to move once it leave the pitcher’s hand. Second, we show some evidence that pitchers do adopt different strategies for different game situations. We then describe the rich, pitch level data set we use for this analysis. Finally, we discuss our random forest classifier and the results it produces.
Pichers be sequencing
AB networks
The Data
The data involved in this project consists of every pitch from the 2015 through the 2018 Major League Baseball (MLB) seasons. These four seasons contained nearly 3 million observations, and the data include categorization of 16 different types of pitches, the spin, speed, and location of each pitch, the game situation (score, runners on base, balls and strikes, etc.), information about the pitcher and batter, and the result of the at-bat.
From this data set, we engineer a few important features. Since each pitch is identified by an at bat id and a pitch number, we can add the previous pitch types as features to each pitch. For this model, we add categorical features for the previous two pitches. We also add the previous at bat’s result as a feature.
Although information on each batter might be helpful for this modeling problem, we did not have easy access to this kind of hitter data. As an alternative, we add a factor variable indicating the position in the batting order the pitcher is facing. A team’s best hitters tend to bat 3rd or 4th in the order, and a team’s worst hitter tends to bat 8th and 9th, so batting order may be able to tell our model a lot about what pitch types a pitcher will throw.
Lastly, we add features for the game specific share of a pitcher’s total pitches that each pitch types makes up. This set of features is meant to capture the fact that a pitcher’s arsenal of pitch types may change from game to game. Most games a pitcher might throw mostly four seam fastballs, but there might be game specific “fixed effects” that lead him to rely more on his secondary pitches. We’d like our model to be able to use this information in making its predictions.
Methodology
Given how difficult it is to get hits consistently at the major league level, having an idea an idea of what the opposing pitcher is about to throw would confer a significant advantage to the hitter. We endeavor to create a model that successfully predicts the next pitch a pitcher will throw in an at-bat, given the circumstances of the at-bat, the tendencies of the pitcher, and the progress of the game up to that point. Using three distinct random forest models, we derive a predictive approach that generally outperforms guessing that the pitcher will throw their most common pitch (often called “sitting on a pitch”), and in most cases, significantly exceeds this “sitting on a pitch” approach.
The models are generated with a train/test split and then evaluated for the out-of-sample performance against the testing set. Models are generated per pitcher, in such a way that be beneficial in application to a baseball manager or hitter, given the situation in the game.
Our Random Forests
Random forests, much like actual forests, are an aggregation of individual trees. Tree models make predictions through a series of binary decisions based on a selection of features that sort the data into groups of most likely outcomes. While trees are intuitive, a well performing model will add some layers of complexity that reduce over fitting. Bootstrap aggregating, or “bagging” involves taking \(B\) bootstrapped samples of the original data and fitting a tree model to each one. Predictions are generated using a summary of the \(B\) tree models. For a categorical outcome, each tree model contributes one vote and the outcome is classified by majority rule.
Random forests extend bagged trees by only allowing each individual tree to use \(m\) of the total number of features, \(p\). So bagging is equivalent to a random forest with \(m = p\). Restricting the each tree to a subset of the total features decorrelates the individual tree models, reducing variance in the predictions and making it less likely that the model will over fit the data. For our random forest models, we use a common choice of feature size, \(m \approx \sqrt p\).
The Situational Model
The first of our three random forest models uses information readily available in the at-bat to predict the upcoming pitch. The features involved here include the ball-strike count, opposing batter’s stance, inning, how many pitches thrown in the at-bat so far, the game score, and the runners on base. This is the most interpretable model, as it is composed of the factors that are generally considered most relevant and well-known by players and coaches in the moment. As random forests are an aggregation of individual trees, it can be illustrative to look at a single tree to get a sense for how decisions are being made at various nodes. Consider, for example, the following tree as an example of what the random forest is doing for pitcher Felix Hernandez.

Hernandez is a pitcher with a diverse arsenal of pitches. As one can see, the predictive model analyzes factors about the game situation to indicate the next pitch. It considers, for example, the count on the batter and whether the batter stands left or right. After running through the branches and nodes with binary decisions based on the in-game situation, a prediction about the next pitch is made at the bottom of the tree. The random forest takes a bootstrap aggregate of trees like this one, but a single tree helps us see an example of the predictive process.
The Lagged Model
The second random forest builds upon the features selected in the Situational Model and supplements them with information about the previous two pitches and the event the last at-bat. This allows for the model to incorporate lagged information that might directly influence the next pitch. Did the pitcher just give up a home run on the curve? Maybe it’s a steady diet of fastballs from here on out. Did the pitcher just give the batter two straight fastballs to study? Perhaps it’s time for an off-speed pitch like a change-up.
Trash Can Model
The third and final random forest uses nearly every feature from the dataset to control for all possible scenarios and variations in the feature matrix. This means that it not only considers all the factors included in the other two models, but also includes what the pitcher’s game has looked like so far; that is, it takes into account the pitch choices as a percent of the overall pitches in the game up to that point. (Is this a correct reading?) So if the pitcher is leaning heavily on the slider that day, this model will incorporate that pattern.
Results
In [TABLE/APPENDIX], we publish our models’ results for 30 pitchers from Major League Baseball. These pitchers are generally considered some of the best in the business, but there are some pitchers from outside the top tier for completeness. We also note that the model is easily adaptable to any pitcher who threw between 2015 and 2018. In [TABLE/APPENDIX], we present the pitching profiles of the 30 pitchers based on the style of their pitches and the frequency that they are thrown.
To measure our models’ effectiveness, we compare them to the most-common pitch thrown by the pitcher (called “sitONE”) and to each other. The out-of-sample performance of each model is presented in “trashcans” 1 to 3 (our sincerest apologies to Astros fans for the name).
Most models improved on the guess of the upcoming pitch when compared to the “sitting on the pitch” as seen in [TABLE/APPENDIX]. Consider the case of Chris Sale. Sale is a perennial All-Star, and finished top-5 in Cy Young (MLB’s most valuable pitcher award) votes each year of our data. If a batter were to look for his most common pitch (the two-seam fastball), he would would only be right about one third of the time. However, Sale becomes increasingly more predictable as the model incorporates more features. The Situational Model and the Lagged Model predict his next pitch at 37% and 38% respectively. Still, the Game Fixed Effects Model predicts his next pitch with an out-of-sample accuracy of nearly 46%, a jump of about 13%. There isn’t a hitter in baseball who wouldn’t want to know Sale’s next pitch with a 13% increase in accuracy!
(Do these numbers need to be responsive to different train/test splits?) I think it’d be nice, but I think it counts as unfeasible for our computing power purposes since running the models once takes me about 30 minutes for me at least. But for interpretation purposes, small difference in performance might not be stable results so they shouldn’t be read into too much.
On the other hand, some pitcher profiles grew in accuracy only up through the first or second model, and then decrease as more features are added. For example, Mark Melancon and Huston Street have out-of-sample prediction accuracies that peak in the Lagged Model but fall in the Game Fixed Effects Model. We present this as some evidence of over-fitting for certain pitchers.
Not all pitchers are particularly predictable, however. Corey Kluber, a two-time Cy Young winner (one time in our data window), has such a varied arsenal of pitches that even the most predictive model (.343 out of sample accuracy) barely little information about the next pitch, even if it beats he sit-one rate. Further, some pitchers remained elusive for all three of the models. Trevor Rosenthal, for instance, throws a fastball on 75% of his pitches, and all three models performed worse than this “sitting on the pitch” rate. [Do we have a good reason for why this might be happening?]
Finally, we note that predictive power does not necessarily equate to hits. Enter Zack Britton, who led the league in saves during the 2016 season. Britton is nearly a one-pitch pitcher, throwing sinkers on 89.7% of his pitches. The Game Fixed Effects model improves this prediction a few fractions of a percent, but in either case, it’s fair to say that most hitters know exactly what Britton is about to throw. Nevertheless, Britton put up an otherworldly 0.54 ERA in 2016! That is to say, even if batters knew with near perfect clairvoyance a that sinker was on its way, making contact that leads to a hit is a whole other matter.
what it all means, probably nothing
implications for how hitters should approach thinking about predicting pitches. What it all means: - we’ve demonstrated that the game situation, previous pitches, previous result, batting order position, and game to game changes in a pitcher’s “stuff” all help predict pitches - for some pitcher, all of these features are helpful. for others, using all of the features over fits - this modelling is not dierrctly useful to teams on a pitch to pitch level. it’d probably be considered cheating for an assistant coach to be sitting in the dugout with laptop inputting the situation and having the model spit back predictions. Baseball has already shown it is uncomfortable with certain levels of technology entering the game, adding machine learning would be overstepping no doubt. - rather, what we’ve provided is a framework for hitters to analyze what kind of information is helpful in predicting a particular pitcher’s pitch type. They can focus on the information that is important and ignore the rest. this will help them in building scouting reports on pitchers - as the Astros showed us all in 2017?, this is crucial
(gonna try to make this coherent) Moreover: - where our work might be useful on a pitch to pitch basis is with fan enjoyment experience. baseball has lost popularity in recent years, with Tv ratings on the decline and game attendance faltering as well. Surely, this decrease is due to the games slow pace and lack of entertainment value for the casual fan. after all, the game grinds to a halt after each pitch, pausing for players and coaches to relay signs, adjust equipment, and mentally prepare for the next pitch
but for baseball enthusiasts, this segmented gameplay is part of the fun. After each pitch, it is perfectly observable to all players involved what the situation is. The “game within the game” is figuring out how to best respond to each state of the game. And a big part of that is the batter trying to guess what pitch is coming and the pitcher trying to throw a pitch that the batter might not expect.
our modeling tool can be a tool to let fans watching at home in on the game within the game, which is why we’ve built our shiny web app. Our app allows a fan to input a situation and get pitch prediction percentages in return. This will vastly improve porch beers with the boys while listening to America’s past time on the radio as well as Friday Night baseball on the couch with Dom’s
Appendix
Overall Performance
| Archer |
Chris |
0.474 |
0.559 |
0.580 |
0.566 |
| Arrieta |
Jake |
0.471 |
0.474 |
0.477 |
0.470 |
| Boxberger |
Brad |
0.631 |
0.644 |
0.651 |
0.644 |
| Britton |
Zach |
0.896 |
0.894 |
0.899 |
0.899 |
| Bumgarner |
Madison |
0.283 |
0.314 |
0.367 |
0.409 |
| Chapman |
Aroldis |
0.748 |
0.732 |
0.738 |
0.731 |
| Cole |
Gerrit |
0.497 |
0.482 |
0.491 |
0.469 |
| Darvish |
Yu |
0.367 |
0.389 |
0.412 |
0.453 |
| Davis |
Wade |
0.487 |
0.474 |
0.459 |
0.452 |
| deGrom |
Jacob |
0.428 |
0.407 |
0.419 |
0.410 |
| Gray |
Sonny |
0.321 |
0.394 |
0.401 |
0.421 |
| Gregerson |
Luke |
0.433 |
0.513 |
0.492 |
0.560 |
| Greinke |
Zack |
0.417 |
0.430 |
0.436 |
0.411 |
| Hernandez |
Felix |
0.314 |
0.380 |
0.389 |
0.368 |
| Kershaw |
Clayton |
0.475 |
0.506 |
0.522 |
0.522 |
| Keuchel |
Dallas |
0.467 |
0.470 |
0.483 |
0.476 |
| Kluber |
Corey |
0.322 |
0.330 |
0.343 |
0.338 |
| McHugh |
Collin |
0.332 |
0.360 |
0.397 |
0.398 |
| Melancon |
Mark |
0.588 |
0.608 |
0.608 |
0.596 |
| Miller |
Andrew |
0.574 |
0.583 |
0.601 |
0.581 |
| Norris |
Bud |
0.411 |
0.467 |
0.457 |
0.451 |
| Price |
David |
0.323 |
0.322 |
0.322 |
0.338 |
| Rosenthal |
Trevor |
0.752 |
0.726 |
0.740 |
0.704 |
| Sale |
Chris |
0.332 |
0.370 |
0.381 |
0.463 |
| Scherzer |
Max |
0.528 |
0.530 |
0.526 |
0.484 |
| Strasburg |
Stephen |
0.482 |
0.467 |
0.461 |
0.435 |
| Street |
Huston |
0.427 |
0.672 |
0.700 |
0.645 |
| Tolleson |
Shawn |
0.614 |
0.598 |
0.603 |
0.554 |
| Wacha |
Michael |
0.517 |
0.516 |
0.514 |
0.483 |
| Zimmermann |
Jordan |
0.510 |
0.503 |
0.499 |
0.479 |
Pitch Types: Trevor Rosenthal
| FF |
2206 |
0.753 |
| CH |
432 |
0.148 |
| SL |
255 |
0.087 |
| CU |
32 |
0.011 |
| FT |
2 |
0.001 |
| FA |
1 |
0.000 |
Pitch Types: Felix Hernandez
| SI |
2956 |
0.314 |
| CH |
2348 |
0.249 |
| CU |
2185 |
0.232 |
| FF |
1393 |
0.148 |
| SL |
536 |
0.057 |
| FC |
10 |
0.001 |
Pitch Types: Chris Archer
| FF |
6045 |
0.474 |
| SL |
5295 |
0.415 |
| CH |
1125 |
0.088 |
| FT |
250 |
0.020 |
| CU |
36 |
0.003 |
Pitch Types: Zach Britton
| SI |
2840 |
0.897 |
| SL |
243 |
0.077 |
| FF |
59 |
0.019 |
| FT |
24 |
0.008 |
Pitch Types: Wade Davis
| FF |
1910 |
0.487 |
| FC |
1133 |
0.289 |
| KC |
788 |
0.201 |
| FT |
86 |
0.022 |
| CH |
1 |
0.000 |
Pitch Types: Dallas Keuchel
| FT |
5442 |
0.467 |
| SL |
2394 |
0.206 |
| CH |
1429 |
0.123 |
| FC |
1203 |
0.103 |
| FF |
1175 |
0.101 |
Pitch Types: Corey Kluber
| SI |
4012 |
0.322 |
| CU |
2615 |
0.210 |
| FF |
1931 |
0.155 |
| SL |
1637 |
0.131 |
| FC |
1578 |
0.127 |
| CH |
684 |
0.055 |
Pitch Types: Luke Gregerson
| SL |
1250 |
0.435 |
| SI |
738 |
0.257 |
| FT |
550 |
0.192 |
| FF |
261 |
0.091 |
| CH |
41 |
0.014 |
| FC |
31 |
0.011 |
| CU |
1 |
0.000 |
Pitch Types: David Price
| FT |
3536 |
0.323 |
| CH |
2359 |
0.216 |
| FC |
2152 |
0.197 |
| FF |
2141 |
0.196 |
| KC |
744 |
0.068 |
Pitch Types: Max Scherzer
| FF |
7117 |
0.528 |
| SL |
2639 |
0.196 |
| CH |
1856 |
0.138 |
| CU |
1090 |
0.081 |
| FC |
688 |
0.051 |
| FT |
89 |
0.007 |
Pitch Types: Aroldis Chapman
| FF |
2927 |
0.749 |
| SL |
748 |
0.192 |
| CH |
158 |
0.040 |
| SI |
73 |
0.019 |
Pitch Types: Clayton Kershaw
| FF |
4873 |
0.475 |
| SL |
3435 |
0.335 |
| CU |
1737 |
0.169 |
| FT |
153 |
0.015 |
| CH |
51 |
0.005 |
Pitch Types: Madison Bumgarner
| FF |
2985 |
0.283 |
| SL |
2111 |
0.200 |
| FT |
1874 |
0.178 |
| CU |
1822 |
0.173 |
| FC |
1318 |
0.125 |
| CH |
441 |
0.042 |
Pitch Types: Sonny Gray
| FF |
3193 |
0.321 |
| FT |
2712 |
0.273 |
| CU |
1596 |
0.161 |
| SL |
1537 |
0.155 |
| CH |
712 |
0.072 |
| FC |
182 |
0.018 |
Pitch Types: Huston Street
| SI |
623 |
0.428 |
| SL |
541 |
0.371 |
| CH |
293 |
0.201 |
Pitch Types: Brad Boxberger
| FF |
1942 |
0.634 |
| CH |
942 |
0.308 |
| SL |
86 |
0.028 |
| CU |
53 |
0.017 |
| FC |
37 |
0.012 |
| FT |
2 |
0.001 |
Pitch Types: Zack Greinke
| FF |
5049 |
0.418 |
| SL |
2402 |
0.199 |
| CH |
2200 |
0.182 |
| CU |
1305 |
0.108 |
| FT |
1032 |
0.085 |
| EP |
104 |
0.009 |
Pitch Types: Shawn Tolleson
| FF |
1113 |
0.618 |
| CH |
291 |
0.161 |
| SL |
291 |
0.161 |
| FT |
64 |
0.036 |
| FC |
43 |
0.024 |
Pitch Types: Jordan Zimmermann
| FF |
4853 |
0.510 |
| SL |
2547 |
0.268 |
| CU |
1437 |
0.151 |
| CH |
346 |
0.036 |
| FT |
326 |
0.034 |
Pitch Types: Jacob deGrom
| FF |
5009 |
0.428 |
| SL |
2384 |
0.204 |
| FT |
1687 |
0.144 |
| CH |
1490 |
0.127 |
| CU |
1121 |
0.096 |
Pitch Types: Gerrit Cole
| FF |
5812 |
0.497 |
| SL |
2253 |
0.193 |
| KC |
1440 |
0.123 |
| SI |
815 |
0.070 |
| CH |
715 |
0.061 |
| FT |
626 |
0.054 |
| CU |
29 |
0.002 |
Pitch Types: Mark Melancon
| FC |
1913 |
0.589 |
| KC |
864 |
0.266 |
| FF |
443 |
0.136 |
| FS |
30 |
0.009 |
Pitch Types: Jake Arrieta
| SI |
5663 |
0.471 |
| SL |
2583 |
0.215 |
| CU |
1584 |
0.132 |
| FF |
1368 |
0.114 |
| CH |
830 |
0.069 |
Pitch Types: Andrew Miller
| SL |
2068 |
0.575 |
| FF |
1446 |
0.402 |
| FT |
81 |
0.023 |
Pitch Types: Stephen Strasburg
| FF |
4464 |
0.483 |
| CU |
1757 |
0.190 |
| CH |
1487 |
0.161 |
| FT |
776 |
0.084 |
| SL |
762 |
0.082 |
Pitch Types: Collin McHugh
| FF |
2879 |
0.332 |
| FC |
2447 |
0.283 |
| CU |
2141 |
0.247 |
| SL |
440 |
0.051 |
| FT |
383 |
0.044 |
| CH |
371 |
0.043 |
Pitch Types: Michael Wacha
| FF |
4822 |
0.518 |
| CH |
1793 |
0.193 |
| FC |
1521 |
0.163 |
| CU |
1085 |
0.116 |
| FT |
93 |
0.010 |
Pitch Types: Chris Sale
| FT |
4218 |
0.332 |
| SL |
3509 |
0.276 |
| CH |
2660 |
0.210 |
| FF |
2301 |
0.181 |
| FA |
2 |
0.000 |
| FS |
1 |
0.000 |
Pitch Types: Zack Greinke
| FF |
5049 |
0.418 |
| SL |
2402 |
0.199 |
| CH |
2200 |
0.182 |
| CU |
1305 |
0.108 |
| FT |
1032 |
0.085 |
| EP |
104 |
0.009 |
Pitch Types: Yu Darvish
| FF |
1967 |
0.367 |
| SL |
1261 |
0.235 |
| FT |
969 |
0.181 |
| FC |
684 |
0.128 |
| CU |
328 |
0.061 |
| CH |
104 |
0.019 |
| FS |
37 |
0.007 |
| EP |
5 |
0.001 |
By Pitch Performance: Trevor Rosenthal
| FF |
0.952 |
0.980 |
0.907 |
| CH |
0.069 |
0.023 |
0.092 |
| SL |
0.000 |
0.000 |
0.098 |
| CU |
0.000 |
0.000 |
0.000 |
| FT |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Felix Hernandez
| SI |
0.591 |
0.633 |
0.566 |
| CH |
0.447 |
0.432 |
0.406 |
| CU |
0.277 |
0.277 |
0.238 |
| FF |
0.129 |
0.115 |
0.197 |
| SL |
0.009 |
0.037 |
0.083 |
| FC |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Chris Archer
| FF |
0.685 |
0.700 |
0.650 |
| SL |
0.554 |
0.582 |
0.585 |
| CH |
0.053 |
0.080 |
0.124 |
| FT |
0.000 |
0.000 |
0.200 |
| CU |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Zach Britton
| SI |
0.995 |
0.998 |
0.991 |
| SL |
0.000 |
0.000 |
0.041 |
| FF |
0.000 |
0.000 |
0.000 |
| FT |
0.400 |
0.600 |
1.000 |
By Pitch Performance: Wade Davis
| FF |
0.770 |
0.846 |
0.730 |
| FC |
0.264 |
0.123 |
0.233 |
| KC |
0.114 |
0.057 |
0.146 |
| FT |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Dallas Keuchel
| FT |
0.870 |
0.869 |
0.769 |
| SL |
0.251 |
0.263 |
0.280 |
| CH |
0.059 |
0.122 |
0.175 |
| FC |
0.017 |
0.033 |
0.183 |
| FF |
0.034 |
0.043 |
0.191 |
By Pitch Performance: Corey Kluber
| SI |
0.705 |
0.702 |
0.518 |
| CU |
0.377 |
0.396 |
0.331 |
| FF |
0.023 |
0.041 |
0.189 |
| SL |
0.055 |
0.088 |
0.262 |
| FC |
0.038 |
0.060 |
0.269 |
| CH |
0.161 |
0.146 |
0.066 |
By Pitch Performance: Luke Gregerson
| SL |
0.696 |
0.756 |
0.672 |
| SI |
0.527 |
0.318 |
0.588 |
| FT |
0.400 |
0.436 |
0.600 |
| FF |
0.000 |
0.000 |
0.038 |
| CH |
0.000 |
0.000 |
0.000 |
| FC |
0.000 |
0.000 |
0.000 |
By Pitch Performance: David Price
| FT |
0.633 |
0.620 |
0.514 |
| CH |
0.280 |
0.254 |
0.231 |
| FC |
0.174 |
0.181 |
0.220 |
| FF |
0.114 |
0.156 |
0.385 |
| KC |
0.007 |
0.000 |
0.040 |
By Pitch Performance: Max Scherzer
| FF |
0.900 |
0.884 |
0.796 |
| SL |
0.237 |
0.254 |
0.254 |
| CH |
0.065 |
0.067 |
0.078 |
| CU |
0.000 |
0.005 |
0.023 |
| FC |
0.000 |
0.000 |
0.014 |
| FT |
0.000 |
0.000 |
0.111 |
By Pitch Performance: Aroldis Chapman
| FF |
0.964 |
0.962 |
0.922 |
| SL |
0.047 |
0.093 |
0.160 |
| CH |
0.031 |
0.000 |
0.094 |
| SI |
0.000 |
0.000 |
0.333 |
By Pitch Performance: Clayton Kershaw
| FF |
0.677 |
0.712 |
0.691 |
| SL |
0.378 |
0.357 |
0.421 |
| CU |
0.339 |
0.379 |
0.293 |
| FT |
0.000 |
0.032 |
0.194 |
| CH |
0.000 |
0.000 |
0.091 |
By Pitch Performance: Madison Bumgarner
| FF |
0.551 |
0.652 |
0.596 |
| SL |
0.270 |
0.312 |
0.374 |
| FT |
0.096 |
0.181 |
0.453 |
| CU |
0.422 |
0.266 |
0.159 |
| FC |
0.110 |
0.333 |
0.447 |
| CH |
0.011 |
0.011 |
0.056 |
By Pitch Performance: Sonny Gray
| FF |
0.501 |
0.505 |
0.512 |
| FT |
0.470 |
0.488 |
0.473 |
| CU |
0.169 |
0.181 |
0.262 |
| SL |
0.494 |
0.471 |
0.435 |
| CH |
0.021 |
0.042 |
0.217 |
| FC |
0.027 |
0.000 |
0.135 |
By Pitch Performance: Huston Street
| SI |
0.632 |
0.632 |
0.592 |
| SL |
0.780 |
0.817 |
0.817 |
| CH |
0.559 |
0.627 |
0.441 |
By Pitch Performance: Brad Boxberger
| FF |
0.913 |
0.920 |
0.869 |
| CH |
0.222 |
0.222 |
0.296 |
| SL |
0.000 |
0.056 |
0.111 |
| CU |
0.000 |
0.000 |
0.091 |
| FC |
0.000 |
0.000 |
0.000 |
| FT |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Zack Greinke
| FF |
0.787 |
0.757 |
0.674 |
| SL |
0.279 |
0.322 |
0.351 |
| CH |
0.252 |
0.286 |
0.255 |
| CU |
0.000 |
0.019 |
0.057 |
| FT |
0.000 |
0.014 |
0.077 |
| EP |
0.048 |
0.048 |
0.048 |
By Pitch Performance: Shawn Tolleson
| FF |
0.901 |
0.924 |
0.807 |
| CH |
0.153 |
0.153 |
0.102 |
| SL |
0.102 |
0.051 |
0.186 |
| FT |
0.077 |
0.077 |
0.231 |
| FC |
0.000 |
0.000 |
0.111 |
By Pitch Performance: Jordan Zimmermann
| FF |
0.856 |
0.849 |
0.743 |
| SL |
0.224 |
0.218 |
0.271 |
| CU |
0.045 |
0.045 |
0.115 |
| CH |
0.000 |
0.014 |
0.071 |
| FT |
0.000 |
0.015 |
0.227 |
By Pitch Performance: Jacob deGrom
| FF |
0.886 |
0.881 |
0.738 |
| SL |
0.090 |
0.103 |
0.172 |
| FT |
0.018 |
0.109 |
0.234 |
| CH |
0.034 |
0.037 |
0.158 |
| CU |
0.022 |
0.004 |
0.053 |
By Pitch Performance: Gerrit Cole
| FF |
0.934 |
0.939 |
0.825 |
| SL |
0.086 |
0.113 |
0.151 |
| KC |
0.007 |
0.014 |
0.056 |
| SI |
0.000 |
0.006 |
0.184 |
| CH |
0.007 |
0.014 |
0.049 |
| FT |
0.000 |
0.000 |
0.127 |
| CU |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Mark Melancon
| FC |
0.903 |
0.914 |
0.836 |
| KC |
0.277 |
0.249 |
0.283 |
| FF |
0.022 |
0.034 |
0.213 |
| FS |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Jake Arrieta
| SI |
0.909 |
0.891 |
0.786 |
| SL |
0.099 |
0.147 |
0.234 |
| CU |
0.155 |
0.158 |
0.142 |
| FF |
0.004 |
0.018 |
0.234 |
| CH |
0.054 |
0.048 |
0.060 |
By Pitch Performance: Andrew Miller
| SL |
0.727 |
0.763 |
0.761 |
| FF |
0.410 |
0.403 |
0.355 |
| FT |
0.000 |
0.000 |
0.059 |
By Pitch Performance: Stephen Strasburg
| FF |
0.908 |
0.877 |
0.746 |
| CU |
0.060 |
0.077 |
0.131 |
| CH |
0.097 |
0.131 |
0.154 |
| FT |
0.006 |
0.019 |
0.237 |
| SL |
0.013 |
0.007 |
0.065 |
By Pitch Performance: Collin McHugh
| FF |
0.462 |
0.483 |
0.497 |
| FC |
0.410 |
0.443 |
0.443 |
| CU |
0.357 |
0.410 |
0.343 |
| SL |
0.045 |
0.182 |
0.318 |
| FT |
0.000 |
0.000 |
0.104 |
| CH |
0.013 |
0.013 |
0.067 |
By Pitch Performance: Michael Wacha
| FF |
0.888 |
0.880 |
0.790 |
| CH |
0.253 |
0.262 |
0.245 |
| FC |
0.046 |
0.046 |
0.131 |
| CU |
0.005 |
0.009 |
0.028 |
| FT |
0.000 |
0.000 |
0.211 |
By Pitch Performance: Chris Sale
| FT |
0.518 |
0.627 |
0.668 |
| SL |
0.415 |
0.352 |
0.316 |
| CH |
0.244 |
0.242 |
0.233 |
| FF |
0.176 |
0.137 |
0.575 |
| FA |
0.000 |
0.000 |
0.000 |
By Pitch Performance: Zack Greinke
| FF |
0.787 |
0.757 |
0.674 |
| SL |
0.279 |
0.322 |
0.351 |
| CH |
0.252 |
0.286 |
0.255 |
| CU |
0.000 |
0.019 |
0.057 |
| FT |
0.000 |
0.014 |
0.077 |
| EP |
0.048 |
0.048 |
0.048 |
By Pitch Performance: Yu Darvish
| FF |
0.744 |
0.751 |
0.680 |
| SL |
0.324 |
0.332 |
0.360 |
| FT |
0.144 |
0.206 |
0.428 |
| FC |
0.080 |
0.168 |
0.292 |
| CU |
0.061 |
0.000 |
0.045 |
| CH |
0.000 |
0.000 |
0.048 |
| FS |
0.000 |
0.000 |
0.000 |
| EP |
0.000 |
0.000 |
0.000 |